package fi.helsinki.cs.ohtu10k.schedule;

import org.joda.time.DateTime;

/**
 * Class representing courses with attached events.
 * @author Thomas Nyman
 *
 */
public interface ScheduleCourse {
	/**
	 * Returns start date of course.
	 * @return Start date of course as Date.
	 */
	public DateTime getStartDate();
	
	/**
	 * Returns end date of course.
	 * @return End date of course as Date.
	 */
	public DateTime getEndDate();
	
	/**
	 * Returns name of course.
	 * @return Name of course as String.
	 */
	public String getName();
	
	/**
	 * Returns course abbreviation.
	 * @return Course Abbreviation as String.
	 */
	public String getAbbreviation();
	
	/**
	 * Returns all events associated to course.
	 * @return Array of all events associated to course.
	 */
	public ScheduleEvent[] getEvents();
	
	/**
	 * Adds specified event to course.
	 * @param event Event to be added.
	 */
	public void addEvent(ScheduleEvent event);
	
	/**
	 * Removes specified event from course.
	 * @param event Event to be removed.
	 */
	public void delEvent(ScheduleEvent event);
	
}
